using System;
using System.Data;
using FluentNHibernate.Cfg;
using NHibernate;
using NHibernate.Cfg;

namespace NHibernateInsight.Tests.Infrastructure.Data
{
    public interface IDatabaseUsageStrategy
    {
        void Init(Action<MappingConfiguration> with_mappings);
        void CleanupResources();
        bool HasDatabaseBeenCreated { get; }
        bool HideCreateAndDropDbSql { get; set; }
        bool HideCreateAndDropSchemaSql { get; set; }
        ISession CurrentSession { get; }
        Configuration CurrentConfiguration { get; }
        IDbConnection ExistingConnection { get; }
        void PrepareDatabaseMedia();
        void ReCreateDatabaseSchema();
        void DropSchema();
        void DropDatabaseMedia();
    }
}